﻿using Aliyun.Oss;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Specialized;
using System.Collections.Generic;

namespace Aliyun.Oss.Tests
{
    
    
    /// <summary>
    ///这是 ExtensionsTest 的测试类，旨在
    ///包含所有 ExtensionsTest 单元测试
    ///</summary>
	[TestClass()]
	public class ExtensionsTest
	{


		private TestContext testContextInstance;

		/// <summary>
		///获取或设置测试上下文，上下文提供
		///有关当前测试运行及其功能的信息。
		///</summary>
		public TestContext TestContext
		{
			get
			{
				return testContextInstance;
			}
			set
			{
				testContextInstance = value;
			}
		}

		#region 附加测试特性
		// 
		//编写测试时，还可使用以下特性:
		//
		//使用 ClassInitialize 在运行类中的第一个测试前先运行代码
		//[ClassInitialize()]
		//public static void MyClassInitialize(TestContext testContext)
		//{
		//}
		//
		//使用 ClassCleanup 在运行完类中的所有测试后再运行代码
		//[ClassCleanup()]
		//public static void MyClassCleanup()
		//{
		//}
		//
		//使用 TestInitialize 在运行每个测试前先运行代码
		//[TestInitialize()]
		//public void MyTestInitialize()
		//{
		//}
		//
		//使用 TestCleanup 在运行完每个测试后运行代码
		//[TestCleanup()]
		//public void MyTestCleanup()
		//{
		//}
		//
		#endregion


		/// <summary>
		///NameValue 的测试
		///</summary>
		[TestMethod()]
		public void NameValueTest()
		{
			object obj = new
			{
				Name = "pingjiang",
				Age = "23"
			};

			NameValueCollection expected = new NameValueCollection();
			expected.Add("Name", "pingjiang");
			expected.Add("Age", "23");

			NameValueCollection actual;
			actual = obj.NameValue();
			Assert.AreEqual(expected.Count, actual.Count);// 如何来测试集合的每个key,value相等
			//Assert.Inconclusive("验证此测试方法的正确性。");
		}

		/// <summary>
		///JoinWith 的测试
		///</summary>
		[TestMethod()]
		public void JoinWithTest()
		{
			IList<string> items = new List<string>()
			{
				"name=pingjiang","age=23","gender=1"
			};
			string c = "&";
			string expected = "name=pingjiang&age=23&gender=1";
			string actual;
			actual = Extensions.JoinWith(items, c);
			Assert.AreEqual(expected, actual);
			
			//Assert.Inconclusive("验证此测试方法的正确性。");
		}
	}
}
